home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Przegladarki internetowe / Mozilla Seamonkey 1.0.5 pl / seamonkey-1.0.5.pl-PL.win32.installer.exe / MAIL.XPI / bin / chrome / messenger.jar / content / messenger / am-server.js < prev    next >
Encoding:
JavaScript  |  2005-07-20  |  12.6 KB  |  315 lines

  1. /* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  2.  * ***** BEGIN LICENSE BLOCK *****
  3.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  4.  *
  5.  * The contents of this file are subject to the Mozilla Public License Version
  6.  * 1.1 (the "License"); you may not use this file except in compliance with
  7.  * the License. You may obtain a copy of the License at
  8.  * http://www.mozilla.org/MPL/
  9.  *
  10.  * Software distributed under the License is distributed on an "AS IS" basis,
  11.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  12.  * for the specific language governing rights and limitations under the
  13.  * License.
  14.  *
  15.  * The Original Code is Mozilla Communicator client code, released
  16.  * March 31, 1998.
  17.  *
  18.  * The Initial Developer of the Original Code is
  19.  * Netscape Communications Corporation.
  20.  * Portions created by the Initial Developer are Copyright (C) 1998-2003
  21.  * the Initial Developer. All Rights Reserved.
  22.  *
  23.  * Contributor(s):
  24.  *   alecf@netscape.com
  25.  *   sspitzer@netscape.com
  26.  *   racham@netscape.com
  27.  *   hwaara@chello.se
  28.  *   bienvenu@nventure.com
  29.  *
  30.  * Alternatively, the contents of this file may be used under the terms of
  31.  * either of the GNU General Public License Version 2 or later (the "GPL"),
  32.  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  33.  * in which case the provisions of the GPL or the LGPL are applicable instead
  34.  * of those above. If you wish to allow use of your version of this file only
  35.  * under the terms of either the GPL or the LGPL, and not to allow others to
  36.  * use your version of this file under the terms of the MPL, indicate your
  37.  * decision by deleting the provisions above and replace them with the notice
  38.  * and other provisions required by the GPL or the LGPL. If you do not delete
  39.  * the provisions above, a recipient may use your version of this file under
  40.  * the terms of any one of the MPL, the GPL or the LGPL.
  41.  *
  42.  * ***** END LICENSE BLOCK ***** */
  43.  
  44. var gRedirectorType = "";
  45. var gServer;
  46. var gObserver;
  47.  
  48. function onInit() 
  49. {
  50.     initServerType();
  51.  
  52.     setupBiffUI();
  53.     setupMailOnServerUI();
  54.     setupFixedUI();
  55.     setupNotifyUI();
  56. }
  57.  
  58. function onPreInit(account, accountValues)
  59. {
  60.   // Bug 134238
  61.   // Make sure server.isSecure will be saved before server.port preference
  62.   parent.getAccountValue(account, accountValues, "server", "isSecure", null, false);
  63.  
  64.   var type = parent.getAccountValue(account, accountValues, "server", "type", null, false);
  65.   gRedirectorType = parent.getAccountValue(account, accountValues, "server", "redirectorType", null, false);
  66.   hideShowControls(type);
  67.  
  68.   gObserver= Components.classes["@mozilla.org/observer-service;1"].
  69.              getService(Components.interfaces.nsIObserverService);
  70.   gObserver.notifyObservers(null, "charsetmenu-selected", "other");
  71.  
  72.   gServer = account.incomingServer;
  73.   
  74.   if(!account.incomingServer.canEmptyTrashOnExit)
  75.   {
  76.     document.getElementById("server.emptyTrashOnExit").setAttribute("hidden", "true");
  77.     document.getElementById("imap.deleteModel.box").setAttribute("hidden", "true");
  78.   }
  79.   var hideButton = false;
  80.  
  81.   try {
  82.     if (gRedirectorType) {
  83.       var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  84.       var prefString = "mail.accountmanager." + gRedirectorType + ".hide_advanced_button";
  85.       hideButton = prefs.getBoolPref(prefString);
  86.     }
  87.   }
  88.   catch (ex) { }
  89.   if (hideButton)
  90.     document.getElementById("server.advancedbutton").setAttribute("hidden", "true");  
  91.   // otherwise let hideShowControls decide
  92. }
  93.  
  94. function initServerType()
  95. {
  96.   var serverType = document.getElementById("server.type").getAttribute("value");
  97.   
  98.   var propertyName = "serverType-" + serverType;
  99.  
  100.   var messengerBundle = document.getElementById("bundle_messenger");
  101.   var verboseName = messengerBundle.getString(propertyName);
  102.   setDivText("servertype.verbose", verboseName);
  103.  
  104.   var isSecureSelected;
  105.   if (document.getElementById("server.isSecure").hidden == true)
  106.     // if socketType set to alwaysSSL
  107.     isSecureSelected = document.getElementById("server.socketType").value == 3;
  108.   else
  109.     isSecureSelected = document.getElementById("server.isSecure").checked;
  110.   var protocolInfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + serverType].getService(Components.interfaces.nsIMsgProtocolInfo);
  111.   document.getElementById("defaultPort").value = protocolInfo.getDefaultServerPort(isSecureSelected);
  112. }
  113.  
  114. function setDivText(divname, value) 
  115. {
  116.   var div = document.getElementById(divname);
  117.   if (!div) 
  118.     return;
  119.   div.setAttribute("value", value);
  120. }
  121.  
  122.  
  123. function onAdvanced()
  124. {
  125.   // Store the server type and, if an IMAP or POP3 server,
  126.   // the settings needed for the IMAP/POP3 tab into the array
  127.   var serverSettings = {};
  128.   var serverType = document.getElementById("server.type").getAttribute("value");
  129.   serverSettings.serverType = serverType;
  130.  
  131.  
  132.   if (serverType == "imap")
  133.   {
  134.     serverSettings.dualUseFolders = document.getElementById("imap.dualUseFolders").checked;
  135.     serverSettings.usingSubscription = document.getElementById("imap.usingSubscription").checked;
  136.     serverSettings.useIdle = document.getElementById("imap.useIdle").checked;
  137.     serverSettings.maximumConnectionsNumber = document.getElementById("imap.maximumConnectionsNumber").getAttribute("value");
  138.     // string prefs
  139.     serverSettings.personalNamespace = document.getElementById("imap.personalNamespace").getAttribute("value");
  140.     serverSettings.publicNamespace = document.getElementById("imap.publicNamespace").getAttribute("value");
  141.     serverSettings.serverDirectory = document.getElementById("imap.serverDirectory").getAttribute("value");
  142.     serverSettings.otherUsersNamespace = document.getElementById("imap.otherUsersNamespace").getAttribute("value");
  143.     serverSettings.overrideNamespaces = document.getElementById("imap.overrideNamespaces").checked;
  144.   }
  145.   else if (serverType == "pop3")
  146.   {
  147.     serverSettings.deferGetNewMail = document.getElementById("pop3.deferGetNewMail").checked;
  148.     serverSettings.deferredToAccount = document.getElementById("pop3.deferredToAccount").getAttribute("value");
  149.   }
  150.  
  151.   window.openDialog("chrome://messenger/content/am-server-advanced.xul",
  152.                     "_blank", "chrome,modal,titlebar", serverSettings);
  153.  
  154.   if (serverType == "imap")
  155.   {
  156.     document.getElementById("imap.dualUseFolders").checked = serverSettings.dualUseFolders;
  157.     document.getElementById("imap.usingSubscription").checked = serverSettings.usingSubscription;
  158.     document.getElementById("imap.useIdle").checked = serverSettings.useIdle;
  159.     document.getElementById("imap.maximumConnectionsNumber").setAttribute("value", serverSettings.maximumConnectionsNumber);
  160.     // string prefs
  161.     document.getElementById("imap.personalNamespace").setAttribute("value", serverSettings.personalNamespace);
  162.     document.getElementById("imap.publicNamespace").setAttribute("value", serverSettings.publicNamespace);
  163.     document.getElementById("imap.serverDirectory").setAttribute("value", serverSettings.serverDirectory);
  164.     document.getElementById("imap.otherUsersNamespace").setAttribute("value", serverSettings.otherUsersNamespace);
  165.     document.getElementById("imap.overrideNamespaces").checked = serverSettings.overrideNamespaces;
  166.   }
  167.   else if (serverType == "pop3")
  168.   {
  169.     document.getElementById("pop3.deferGetNewMail").checked = serverSettings.deferGetNewMail;
  170.     document.getElementById("pop3.deferredToAccount").setAttribute("value", serverSettings.deferredToAccount);
  171.     var pop3Server = gServer.QueryInterface(Components.interfaces.nsIPop3IncomingServer);
  172.     // we're explicitly setting this so we'll go through the SetDeferredToAccount method
  173.     pop3Server.deferredToAccount = serverSettings.deferredToAccount;
  174.   }
  175. }
  176.  
  177. function secureSelect()
  178. {
  179.     var serverType   = document.getElementById("server.type").getAttribute("value");
  180.     var protocolInfo = Components.classes["@mozilla.org/messenger/protocol/info;1?type=" + serverType].getService(Components.interfaces.nsIMsgProtocolInfo);
  181.  
  182.     var isSecureSelected;
  183.     if (document.getElementById("server.isSecure").hidden == true)
  184.       // if socketType set to alwaysSSL
  185.       isSecureSelected = document.getElementById("server.socketType").value == 3;
  186.     else
  187.       isSecureSelected = document.getElementById("server.isSecure").checked;
  188.  
  189.     var defaultPort = protocolInfo.getDefaultServerPort(false);
  190.     var defaultPortSecure = protocolInfo.getDefaultServerPort(true);
  191.     var port = document.getElementById("server.port");
  192.     var portDefault = document.getElementById("defaultPort");
  193.     var prevDefaultPort = portDefault.value;
  194.  
  195.     if (isSecureSelected) {
  196.       portDefault.value = defaultPortSecure;
  197.       if (port.value == "" || (port.value == defaultPort && prevDefaultPort != portDefault.value))
  198.         port.value = defaultPortSecure;
  199.     } else {
  200.         portDefault.value = defaultPort;
  201.         if (port.value == "" || (port.value == defaultPortSecure && prevDefaultPort != portDefault.value))
  202.           port.value = defaultPort;
  203.     } 
  204. }
  205.  
  206. function setupBiffUI()
  207.    var broadcaster = document.getElementById("broadcaster_doBiff");
  208.  
  209.    var dobiff = document.getElementById("server.doBiff");
  210.    var checked = dobiff.checked;
  211.    var locked = getAccountValueIsLocked(dobiff);
  212.  
  213.    if (checked && !locked)
  214.      broadcaster.removeAttribute("disabled");
  215.    else
  216.      broadcaster.setAttribute("disabled", "true");
  217. }
  218.  
  219. function setupMailOnServerUI()
  220.    var checked = document.getElementById("pop3.leaveMessagesOnServer").checked;
  221.    var locked = getAccountValueIsLocked(document.getElementById("pop3.leaveMessagesOnServer"));
  222.    document.getElementById("pop3.deleteMailLeftOnServer").disabled = locked || !checked ;
  223.    setupAgeMsgOnServerUI();
  224. }
  225.  
  226. function setupAgeMsgOnServerUI()
  227.    var leaveMsgsChecked = document.getElementById("pop3.leaveMessagesOnServer").checked;
  228.    var checked = document.getElementById("pop3.deleteByAgeFromServer").checked;
  229.    var locked = getAccountValueIsLocked(document.getElementById("pop3.deleteByAgeFromServer"));
  230.    document.getElementById("pop3.deleteByAgeFromServer").disabled = locked || !leaveMsgsChecked;
  231.    document.getElementById("daysEnd").disabled = locked || !leaveMsgsChecked;
  232.    document.getElementById("pop3.numDaysToLeaveOnServer").disabled = locked || !checked || !leaveMsgsChecked;
  233. }
  234.  
  235. function setupFixedUI()
  236. {
  237.   // if the redirectorType is non-empty, then the fixedValue elements should be shown
  238.   //
  239.   // one day, add code that allows for the redirector type to specify
  240.   // to show fixed values or not.  see bug #132737
  241.   // use gRedirectorType to get a pref like
  242.   // "mail.accountmanager." + gRedirectorType + ".show_fixed_values"
  243.   //
  244.   // but for now, this isn't needed.  we'll assume those who implement
  245.   // redirector types want to show fixed values.
  246.   var showFixedValues = gRedirectorType ? true : false;
  247.  
  248.   var controls = [document.getElementById("fixedServerName"), 
  249.                   document.getElementById("fixedUserName"),
  250.                   document.getElementById("fixedServerPort")];
  251.  
  252.   var len = controls.length;  
  253.   for (var i=0; i<len; i++) {
  254.     var fixedElement = controls[i];
  255.     var otherElement = document.getElementById(fixedElement.getAttribute("use"));
  256.  
  257.     if (showFixedValues) {
  258.       // get the value from the non-fixed element.
  259.       var fixedElementValue = otherElement.value;
  260.       fixedElement.setAttribute("value", fixedElementValue);
  261.  
  262.       otherElement.setAttribute("collapsed","true");
  263.       fixedElement.removeAttribute("collapsed");
  264.     }
  265.     else {
  266.       fixedElement.setAttribute("collapsed","true");
  267.       otherElement.removeAttribute("collapsed");
  268.     }
  269.   }
  270. }
  271.  
  272. function setupNotifyUI()
  273.   var broadcaster = document.getElementById("broadcaster_notify");
  274.  
  275.   var notify = document.getElementById("nntp.notifyOn");
  276.   var checked = notify.checked;
  277.   var locked = getAccountValueIsLocked(notify);
  278.  
  279.   if (checked && !locked)
  280.     broadcaster.removeAttribute("disabled");
  281.   else
  282.     broadcaster.setAttribute("disabled", "true");
  283. }
  284.  
  285. function BrowseForNewsrc()
  286. {
  287.   var newsrcTextBox = document.getElementById("nntp.newsrcFilePath");
  288.   var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  289.   fp.init(window, 
  290.           document.getElementById("browseForNewsrc").getAttribute("filepickertitle"),
  291.           nsIFilePicker.modeSave);
  292.  
  293.   var currentNewsrcFile;
  294.   try {
  295.     currentNewsrcFile = Components.classes[LOCALFILE_CTRID].createInstance(nsILocalFile);
  296.     currentNewsrcFile.initWithPath(newsrcTextBox.value);
  297.   } catch (e) {
  298.     dump("Failed to create nsILocalFile instance for the current newsrc file.\n");
  299.   }
  300.  
  301.   if (currentNewsrcFile) {
  302.     fp.displayDirectory = currentNewsrcFile.parent;
  303.     fp.defaultString = currentNewsrcFile.leafName;
  304.   }
  305.  
  306.   fp.appendFilters(nsIFilePicker.filterAll);
  307.  
  308.   if (fp.show() != nsIFilePicker.returnCancel)
  309.     newsrcTextBox.value = fp.file.path;
  310. }
  311.